home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr37 / ho5m.zip / WIZARD.TXT < prev   
Text File  |  1994-06-17  |  43KB  |  1,199 lines

  1.  
  2.           The HANDS ON  Wizard manual            Page 1
  3.  
  4.  
  5.  
  6.           Updated June, 1994
  7.  
  8.  
  9.           This Product is Shareware, if you continue to use it
  10.  
  11.           Please Legalise your usage through Registration.
  12.  
  13.  
  14.                         _______
  15.                    ____|__     |               (R)
  16.                 --|       |    |-------------------
  17.                   |   ____|__  |  Association of
  18.                   |  |       |_|  Shareware
  19.                   |__|   o   |    Professionals
  20.                 -----|   |   |---------------------
  21.                      |___|___|    Member
  22.  
  23.  
  24.  
  25.           Table of Contents                              page #
  26.  
  27.           1.     Introduction                              1
  28.           2.     Script Files                              2
  29.                  2.1    Script Commands                    3
  30.                  2.2    An example                         6
  31.           3.     Using Wizard with Batch Files            11
  32.           4.     SHOW - debugging scripts                 11
  33.           5.     Feeding the Wizard                       13
  34.           6.     The Apprentice                           15
  35.           7.     SUPPORT and the ASP                      15
  36.  
  37.           Appendix   A - Special keys                     16
  38.           Appendix   B - Acknowledgments and history      18
  39.           Appendix   C - ShareWare Vendor Notice (if any)
  40.  
  41.  
  42.  
  43.           1.  Introduction
  44.  
  45.           The Wizard is a program which will run any other program, and
  46.           make it appear to that program that a user is typing commands
  47.           at the keyboard.  Actually the "typing" is done automatically
  48.           by the Wizard as specified in a script file.  The Wizard's
  49.           scripts also allow it to monitor the contents of the
  50.           computer's screen and elapsed time and take actions based on
  51.           the screen contents and/or the time.  The Wizard should work
  52.           with any program that uses DOS or the BIOS for keyboard input,
  53.           or that uses the BIOS data area directly.  However, programs
  54.           that interface directly with the keyboard hardware will not
  55.  
  56.  
  57.  
  58.  
  59.           The HANDS ON  Wizard manual            Page 2
  60.  
  61.  
  62.           work with it.  Fortunately very few programs work this way.
  63.           Wizard is commonly abbreviated as WIZ, and you can also just
  64.           call it 'Wizard'.
  65.  
  66.           There are two primary Wizard distributions:
  67.             1) with the Hands On remote access package.
  68.             2) on its own.
  69.  
  70.           Typical usage of Wizard might be:
  71.           (Wizard is abbreviated as WIZ here)
  72.  
  73.               WIZ script.scr kermit
  74.  
  75.           which would cause Wizard to read in the script file name
  76.           'script.scr' and then run kermit.  While kermit was running,
  77.           Wizard would "type" whatever was in the script file.  When
  78.           kermit terminated (either because the script file included a
  79.           command to terminate the program, or because the user manually
  80.           terminated kermit) Wizard would also terminate.  This has the
  81.           benefit that the user does not need to worry about whether a
  82.           TSR is loaded;  Wizard is loaded for just long enough to run
  83.           the application, and unloads itself as soon as the application
  84.           has finished.
  85.  
  86.           If for any reason more than one application needs to be used,
  87.           Wizard can be run as:
  88.  
  89.               WIZ script.scr command
  90.  
  91.           which will run another copy of the DOS command interpreter.
  92.           The Wizard script can then run as many applications as
  93.           necessary, and finish by
  94.           entering:     EXIT
  95.           to leave the command interpreter (and hence also terminate
  96.           Wizard).
  97.  
  98.           You can pass a complete command line with parameters to your
  99.           application - for example, if you would normally start an
  100.  
  101.           application as:     program arg1 arg2 arg3
  102.           then simply use:    WIZ script.scr program arg1 arg2 arg3
  103.  
  104.  
  105.  
  106.           2.  Script Files
  107.  
  108.           Normally, script files contain ordinary letters:  each letter
  109.           is interpreted as the corresponding key on the keyboard.  Thus
  110.           a
  111.           script:      abc
  112.  
  113.  
  114.  
  115.  
  116.           The HANDS ON  Wizard manual            Page 3
  117.  
  118.  
  119.           would cause the keys 'a', 'b' and 'c' to be "typed".
  120.  
  121.           However, end-of-line is ignored in script files, so there
  122.           needs to be some way to specify the <ENTER> key (and indeed
  123.           the many other special keys that are not normal printable
  124.           ASCII characters).  These are indicated by enclosing a
  125.           description of the key inside '<' and '>'.
  126.  
  127.           A number of special keys are permitted.  Some examples
  128.           follow:
  129.           <Ctrl-@>        <X>             <Alt-180>       <Alt-P>
  130.           <Ctrl-A>        <Y>             <Alt-181>       <Alt-Q>
  131.  
  132.           There is a complete list in Appendix A.
  133.  
  134.           These special keys must be entered exactly as shown (with the
  135.           exception that case is not significant):  for example, Wizard
  136.           will not recognize <Control-Up> or <Ctrl Up> - it must be
  137.           <Ctrl-Up> or <ctrl-up> etc.
  138.  
  139.           There is no need to enclose normal printable characters within
  140.           '<' and '>', although it is permitted. For example, the
  141.           following two lines are equivalent:
  142.  
  143.               dir<enter>
  144.               <d><i><r><enter>
  145.  
  146.           Two characters have a special meaning in script files:  '<'
  147.           and '{'.  These must be written as <<> and <{> respectively.
  148.  
  149.           Blank spaces in script files will be "typed" as the <space>
  150.           key whenever they appear.  This can be confusing if there is
  151.           trailing white space at the end of a line, or if you leave a
  152.           blank between two commands (see below).  The output of the
  153.           SHOW command (again, see below) will make these space
  154.           characters more obvious...
  155.  
  156.  
  157.  
  158.           2.1 Script Commands
  159.  
  160.           In addition to keys, Wizard provides a number of commands to
  161.           do more exotic things such as checking for text on the screen
  162.           so that the "typing" can be more intelligent.  You can use the
  163.           cpscrn tool, PRTSCR (print screen), or we can provide other
  164.           screen location and grabbing tools as needed.  Commands are
  165.           enclosed in '{' and '}'.  The following commands are
  166.           supported:
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.           The HANDS ON  Wizard manual            Page 4
  174.  
  175.  
  176.           AFTER seconds Go to a label if timer has been running for more
  177.           than a specified number of seconds.  For example, here is a
  178.           script to wait until it finds C:\> in the bottom left corner
  179.           of the screen, but with a timeout after 5.5 seconds:
  180.  
  181.                {zero}
  182.                {label loop}
  183.                {after 5.5 abort}
  184.                {not_at (24,0) "C:\\>" loop}
  185.                {label abort}
  186.  
  187.           Notice that the timer is zeroed before the start of the loop.
  188.  
  189.  
  190.           AT (row, col) Go to a label if the text at a specified
  191.           position on the screen matches.  Syntax is {at (line,column)
  192.           "text" label}.  Line and column are numbered from 0.  The text
  193.           to match is enclosed in quotes.  To match a double quote, use
  194.           \".  To match a \, use \\.  For example, the following script
  195.           waits until it finds C:\> or C:\DOS> in the bottom left corner
  196.           of the screen:
  197.  
  198.                {label loop}
  199.                {at (24,0) "C:\\>" root}
  200.                {at (24,0) "C:\\DOS>" dos}
  201.                {goto loop}
  202.  
  203.           (Naturally "root" and "dos" must be labels elsewhere in the
  204.           script!)
  205.  
  206.  
  207.           BEFORE time Go to a label if timer has been running for less
  208.           than a specified number of seconds.  For example, to go to a
  209.           label "loop" if the timer has been running less than 10
  210.           seconds use:
  211.  
  212.               {before 10.0 loop}
  213.  
  214.  
  215.           CUT Record the contents of the screen in a given location.
  216.           The specified number of characters, starting at the specified
  217.           location, will be saved for later playback using the "paste"
  218.           command.  The syntax is:
  219.               {cut buffer (line,col) number}
  220.  
  221.           Example:  {cut 1 (0,0) 20}
  222.  
  223.           to record 20 characters starting from the top left corner and
  224.           store this in buffer number 1.  The number of buffers is
  225.           limited;  currently it is 5 (0-4 inclusive).  Trailing spaces
  226.  
  227.  
  228.  
  229.  
  230.           The HANDS ON  Wizard manual            Page 5
  231.  
  232.  
  233.           are eliminated;  however, if the entire text is all spaces
  234.           then a single space is retained.
  235.  
  236.  
  237.           DISABLE Disable the keyboard, so that the user cannot
  238.           interfere with what is happening.  The syntax is:  {disable}
  239.           Make sure you call {enable} afterwards, or the user will be
  240.           locked out!
  241.  
  242.  
  243.           ENABLE Enable the keyboard, so that the user can type
  244.           normally.  This is the default.  However, if the user types
  245.           while Wizard is "typing" the result is likely to be
  246.           confusion!  The syntax is:  {enable}
  247.  
  248.  
  249.           END Terminate the "typing" of keys.  Interpretation of the
  250.           script will just stop here.  This happens automatically at the
  251.           end of the script, but saves using an artificial {goto end} if
  252.           the end of the script is error handling code.  Example:  {end}
  253.  
  254.  
  255.           GOTO Goto label.  Instead of moving on to the next key or
  256.           command in the script, go to the specified label and continue
  257.           from there.  For example, the following script will keep on
  258.           "typing" dir<enter> indefinitely:
  259.  
  260.                {label loop}
  261.                dir<enter>
  262.                {goto loop}
  263.  
  264.  
  265.           HOLD Hold shift keys.  Some applications (such as Hands On)
  266.           check the status of various shift keys.  The possible shift
  267.           keys are:  left, right, ctrl or control, alt, num (for
  268.           numlock), scroll, caps and insert.  For example, to "hold
  269.           down" left shift, right shift, control and alt, use:
  270.  
  271.                   {hold left right ctrl alt}
  272.  
  273.           This command does not change the status of any of the shifts
  274.           that are not mentioned.  See "release" for key release.
  275.  
  276.  
  277.           LABEL Record the position of a named label (see the other
  278.           commands for uses).  For example, to create a label named
  279.           "loop" use:
  280.  
  281.               {label loop}
  282.  
  283.  
  284.  
  285.  
  286.  
  287.           The HANDS ON  Wizard manual            Page 6
  288.  
  289.  
  290.           Label names are case sensitive.
  291.  
  292.           Normally label names cannot be reused.  However, if the label
  293.           name starts with a '$' character then the name can be reused,
  294.           and any reference will be to the most recent label (or to the
  295.           first one if no labels with this name have been encountered
  296.           yet).
  297.  
  298.  
  299.           NOT_AT Go to a label if the text at a specified position on
  300.           the screen does not match.  Syntax is {not_at (line,column)
  301.           "text" label}.  Line and column are numbered from 0.  The text
  302.           to match is enclosed in quotes.  To match a double quote, use
  303.           \".  To match a \, use \\.  For example, the following script
  304.           waits until it finds C:\> in the bottom left corner of the
  305.           screen:
  306.  
  307.                {label loop}
  308.                {not_at (24,0) "C:\\>" loop}
  309.  
  310.  
  311.           PASTE Play back the characters saved by the most recent "cut"
  312.           command as if typed from the keyboard.  The syntax is:  {paste
  313.           buffer}
  314.  
  315.           Example:  {paste 1}
  316.  
  317.           to paste back the contents of buffer 1.
  318.  
  319.  
  320.           REBOOT Reboot the PC.  This is a drastic way to recover from
  321.           an application that is not responding as expected!  Usage:
  322.           {reboot}
  323.  
  324.  
  325.           RELEASE Release shift keys.  This is the opposite of "hold";
  326.           it releases the specified keys.  For example, to release num
  327.           lock use:  {release num} This command does not change the
  328.           status of any of the shifts that are not mentioned.  See
  329.           "hold" for a list of the shift keys supported.
  330.  
  331.  
  332.           RESULT Set the DOS result code.  This is used to return an
  333.           "errorlevel" that can be used from a DOS batch file.  For
  334.           example, to return a result code of 2 use:  {result 2}
  335.  
  336.  
  337.           SPEED Set "typing" speed.  Normally, one key is "typed" every
  338.           0.055 seconds, and this is the fastest possible speed.
  339.           However, if your application requires slower typing, the gap
  340.  
  341.  
  342.  
  343.  
  344.           The HANDS ON  Wizard manual            Page 7
  345.  
  346.  
  347.           between characters can be set anywhere up to 14 seconds.  For
  348.           example, to type at 4 keys per second, use:  {speed 0.25}
  349.  
  350.  
  351.           WAIT Wait for X seconds (0 < X < 117,951,481).  For example,
  352.           to pause for half a second, use:  {wait 0.5} Alternatively,
  353.           wait for a given clock time.  For example, to wait until
  354.           3:30:25 in the afternoon, use:  {wait 15:30:25}
  355.  
  356.  
  357.           ZERO Zero timer (see the following commands for uses).  For
  358.           example:
  359.  
  360.               {zero}
  361.  
  362.  
  363.  
  364.           2.2 An example
  365.  
  366.           Here is a real life example of a script file which will run
  367.           Hands On (eg HO.exe) to retrieve a file automatically from a
  368.           remote PC:
  369.  
  370.                {zero}
  371.                {result 4}
  372.                {label $wait}
  373.                {after 60 continue}
  374.                {not_at (24,0) "C:\\" $wait}
  375.  
  376.                {hold left right ctrl alt}
  377.                {label $wait}
  378.                {not_at (23,66) "Press key:       " $wait}
  379.                {release left right ctrl alt}
  380.                <pgdn>
  381.                temp.dat<enter>
  382.  
  383.                {zero}
  384.                {label $wait}
  385.                {after 10 abort_start}
  386.                {not_at (5,18) "File Transfer in Progress..." $wait}
  387.  
  388.                {label ok}
  389.                {zero}
  390.                {label $wait}
  391.                {after 600 abort_mid}
  392.                {at (0,73) "Partial" abort_no_file}
  393.                {at (5,18) "File Transfer in Progress..." $wait}
  394.  
  395.                {result 0}
  396.                {label continue}
  397.  
  398.  
  399.  
  400.  
  401.           The HANDS ON  Wizard manual            Page 8
  402.  
  403.  
  404.                {hold left right ctrl alt}
  405.                {label $wait}
  406.                {not_at (23,66) "Press key:    " $wait}
  407.                {release left right ctrl alt}
  408.                <F10>3
  409.                {end}
  410.  
  411.                {label abort_start}
  412.                {result 1}
  413.                {zero}
  414.                {label $wait}
  415.                < >
  416.                {at (4,0) "  Type <ESC> to continue:" escape}
  417.                {at (5,18) "File Transfer in Progress..." ok}
  418.                {after 10 continue}
  419.                {goto $wait}
  420.                {label escape}
  421.                <esc>
  422.                {goto continue}
  423.  
  424.                {label abort_mid}
  425.                {result 2}
  426.                1
  427.                {zero}
  428.                {label $wait}
  429.                {at (2,0) "  Remove incomplete" yes}
  430.                {after 5 continue}
  431.                {goto $wait}
  432.                {label yes}
  433.                y
  434.                {goto continue}
  435.  
  436.                {label abort_no_file}
  437.                {result 3}
  438.                1
  439.                {goto continue}
  440.  
  441.           Now the same script with an explanation:
  442.  
  443.           Start by waiting for Hands On (HO) to dial, establish a link,
  444.           take control of the remote PC, and transmit the screen of the
  445.           remote PC.  The remote PC is assumed to be at the DOS command
  446.           line prompt, and this prompt is assumed to be at the bottom
  447.           left corner of the screen.
  448.  
  449.                {zero}
  450.  
  451.           Zero timer so that the "after" command will work correctly.
  452.  
  453.                {result 4}
  454.  
  455.  
  456.  
  457.  
  458.           The HANDS ON  Wizard manual            Page 9
  459.  
  460.  
  461.           If a timeout occurs, then we want to return errorlevel 4 to
  462.           DOS.
  463.  
  464.                {label $wait}
  465.  
  466.           Use a reusable label name (purely to save needing to invent a
  467.           whole lot of unique label names).
  468.  
  469.                {after 60 continue}
  470.  
  471.           If the desired text does not appear within 60 seconds then
  472.           give up.
  473.  
  474.                {not_at (24,0) "C:\\" $wait}
  475.  
  476.           If the desired text has not yet appeared then go back to the
  477.           start of the loop.
  478.  
  479.           Bring up HO's local menu, select a file transfer, and specify
  480.           the name of the file.
  481.  
  482.                {hold left right ctrl alt}
  483.  
  484.           To get HO's attention, all four shift keys must be held down
  485.           at one time.
  486.  
  487.                {label $wait}
  488.                {not_at (23,66) "Press key:  " $wait}
  489.  
  490.           Loop until the local menu appears...
  491.  
  492.                {release left right ctrl alt}
  493.  
  494.           No need for the shift keys any more.
  495.  
  496.                <pgdn>
  497.  
  498.           Select a file download.
  499.  
  500.                temp.dat<enter>
  501.  
  502.           Specify the name of the file to be downloaded.
  503.  
  504.           Wait for the file transfer to commence.
  505.  
  506.                {zero}
  507.                {label $wait}
  508.                {after 10 abort_start}
  509.  
  510.           If it takes more than 10 seconds then something has gone badly
  511.  
  512.  
  513.  
  514.  
  515.           The HANDS ON  Wizard manual            Page 10
  516.  
  517.  
  518.           wrong, so give up!
  519.  
  520.                {not_at (5,18) "File Transfer in Progress..." $wait}
  521.  
  522.           Wait for the file transfer to complete.
  523.  
  524.                {label ok}
  525.  
  526.           This label is so we can resume if we find we can during error
  527.           processing.
  528.  
  529.                {zero}
  530.                {label $wait}
  531.                {after 600 abort_mid}
  532.  
  533.           If the file transfer has taken more than 10 minutes then give
  534.           up and abort it.
  535.  
  536.                {at (0,73) "Partial" abort_no_file}
  537.  
  538.           If the file did not exist (and hence could not be downloaded)
  539.           then give up.
  540.  
  541.                {at (5,18) "File Transfer in Progress..." $wait}
  542.  
  543.           Keep waiting as long as the transfer is happening.
  544.  
  545.           Success!  The file transfer has completed.  Terminate the
  546.           session.
  547.  
  548.                {result 0}
  549.           Return a success errorlevel to DOS.
  550.  
  551.                {label continue}
  552.  
  553.           Resume here after error processing.
  554.  
  555.                {hold left right ctrl alt}
  556.                {label $wait}
  557.                {not_at (23,66) "Press key:    " $wait}
  558.  
  559.           Get into HO's local command menu.
  560.  
  561.                {release left right ctrl alt}
  562.                <F10>3
  563.  
  564.           Exit and hang up.
  565.  
  566.                {end}
  567.  
  568.  
  569.  
  570.  
  571.  
  572.           The HANDS ON  Wizard manual            Page 11
  573.  
  574.  
  575.           Stop here (just in case HO takes a moment to terminate, so
  576.           that we don't go on and start typing any of the error
  577.           processing stuff).
  578.  
  579.           The file transfer never got started.
  580.  
  581.                {label abort_start}
  582.                {result 1}
  583.                {zero}
  584.                {label $wait}
  585.                < >
  586.  
  587.           The space key (actually any key would do) causes HO to give up
  588.           waiting for the transfer to commence.
  589.  
  590.                {at (4,0) "  Type <ESC> to continue:" escape}
  591.  
  592.           This is part of the message HO gives when a transfer was
  593.           aborted this way...
  594.  
  595.                {at (5,18) "File Transfer in Progress..." ok}
  596.  
  597.           We were just too impatient!  The transfer has started after
  598.           all.  Resume normal operations.
  599.  
  600.                {after 10 continue}
  601.  
  602.           If there is no response then try to see if we can terminate
  603.           anyway...  (hopefully this would never be required)
  604.  
  605.                {goto $wait}
  606.                {label escape}
  607.                <esc>
  608.                {goto continue}
  609.  
  610.           The file transfer took too long (presumably due to data
  611.           transmission errors).
  612.  
  613.                {label abort_mid}
  614.                {result 2}
  615.                1
  616.           Option 1 tells HO to abort the transfer.
  617.  
  618.                {zero}
  619.                {label $wait}
  620.                {at (2,0) "  Remove incomplete" yes}
  621.           HO should ask if we want to remove the incomplete file (which
  622.           we do).
  623.  
  624.                {after 5 continue}
  625.  
  626.  
  627.  
  628.  
  629.           The HANDS ON  Wizard manual            Page 12
  630.  
  631.  
  632.           If no response after 5 seconds then try to abort anyway...
  633.  
  634.                {goto $wait}
  635.                {label yes}
  636.                y
  637.                {goto continue}
  638.  
  639.           The file did not exist on the remote PC.
  640.  
  641.                {label abort_no_file}
  642.                {result 3}
  643.                1
  644.           Abort the transfer, then terminate HO.
  645.  
  646.                {goto continue}
  647.  
  648.           If a script file contains any error, then Wizard will reject
  649.           it and immediately return an errorlevel of 255.  Use SHOW to
  650.           help locate the cause of the error (look for SHOW below ).
  651.  
  652.  
  653.           3.  Using Wizard with Batch Files
  654.  
  655.           Because Wizard can return an errorlevel for DOS, it is
  656.           possible for a batch file to determine what went on during a
  657.           Wizard (wiz.exe) session.  For example, here is a batch file
  658.           that might be used with the example Hands On (ho.exe) file
  659.           transfer above:
  660.  
  661.                @echo off
  662.                WIZ sample.scr HO.exe site.HO
  663.                if errorlevel 255 goto bad_script
  664.                if errorlevel 4 goto no_HO
  665.                if errorlevel 3 goto abort_no_file
  666.                if errorlevel 2 goto abort_mid
  667.                if errorlevel 1 goto abort_start
  668.                echo Success!
  669.                goto done
  670.                :bad_script
  671.                echo Bad Wizard script
  672.                goto done
  673.                :no_HO
  674.                echo Could not establish HO link
  675.                goto done
  676.                :abort_no_file
  677.                echo Aborted due to file not found
  678.                goto done
  679.                :abort_mid
  680.                echo Aborted mid-file
  681.                goto done
  682.  
  683.  
  684.  
  685.  
  686.           The HANDS ON  Wizard manual            Page 13
  687.  
  688.  
  689.                :abort_start
  690.                echo Aborted before starting transfer
  691.                goto done
  692.                :done
  693.  
  694.  
  695.           4.  SHOW - debugging scripts
  696.  
  697.           SHOW is a program to assist with debugging Wizard scripts.
  698.           Usage is SHOW <script file name>
  699.  
  700.           For example, given the following script in a file SAMPLE.SCR:
  701.  
  702.                {label loop}{not_at (24,0) "C:\\>" loop}
  703.  
  704.           the command:  show sample.scr would produce the output:
  705.  
  706.                {label loop}
  707.                {not_at (24,0) "C:\\>" loop}
  708.  
  709.           SHOW is useful for locating errors in script files.  For
  710.           example, given the following script:
  711.  
  712.                {zero}
  713.                {label loop}
  714.                {aftera 5.5 abort}
  715.                {not_at (24,0) "C:\\>" loop}
  716.                {label abort}
  717.  
  718.  
  719.           SHOW would produce the output:
  720.  
  721.                unknown command: 'aftera'
  722.  
  723.                Script file:
  724.  
  725.                {zero}
  726.                {label loop}
  727.  
  728.                Error in script file!
  729.  
  730.  
  731.           As another example, given the script:
  732.  
  733.                {zero}
  734.                {label loop}
  735.                {after 5.5 abort}
  736.                {not_at (24,0) "C:\\>" loop}
  737.                {label loop}
  738.  
  739.  
  740.  
  741.  
  742.  
  743.           The HANDS ON  Wizard manual            Page 14
  744.  
  745.  
  746.           SHOW would produce the output:
  747.  
  748.                duplicate label 'loop'
  749.  
  750.                Script file:
  751.  
  752.                {zero}
  753.                {label loop}
  754.                {after 5.49 }
  755.                {not_at (24,0) "C:\\>" loop}
  756.  
  757.                Error in script file!
  758.  
  759.           Observe that in all cases SHOW stops at the first error it
  760.           finds, tells you what the error was, and then lists everything
  761.           up to the position at which the error occurred.
  762.  
  763.  
  764.  
  765.           5.  Feeding the Wizard
  766.  
  767.           The Wizard feeder feeds text file information into wizard
  768.           script files.  For example if you have a file containing a
  769.           list of (lets call it a response file and give it the name
  770.           TRANSFER.TEL) a number of other files to be transferred to
  771.           another machine as in:
  772.  
  773.           \BACKUP\BACKUP.1
  774.           \OTHER\OR\SOMEFILE
  775.           \ORIG\WORKFILE
  776.  
  777.           or if you produced it with the telemenu program, the
  778.           file might look like:
  779.  
  780.           [TRANSFER]
  781.           \BACKUP\BACKUP.DAT
  782.           \OTHER\OR\SOMEFILE
  783.           \ORIG\WORKFILE
  784.           ; The NAMES and ADDRESS dBase databases will
  785.           ; be moved to D:\STORAGE\
  786.           [MOVE D:\STORAGE\]
  787.           NAMES.DBF
  788.           ADDRESS.DBF
  789.  
  790.           The [transfer] is used to separate the file transfer section
  791.           from possible copy, move, delete sections that can be
  792.           automatically created using the telemenu.
  793.  
  794.           You can use the feeder to read in the individual lines from
  795.           the response file and insert the lines in a specified Wizard
  796.  
  797.  
  798.  
  799.  
  800.           The HANDS ON  Wizard manual            Page 15
  801.  
  802.  
  803.           script file, so the Wizard will use the inserted information.
  804.           The feeder runs the Wizard with the altered script file for
  805.           each line in the response file, then restores the original
  806.           script file when the job is done.  This gives you the
  807.           capability to produce and use dramatically simpler Wizard
  808.           script files.  It also give you the capability to transfer any
  809.           number of files from anywhere on one computer system to
  810.           another.
  811.  
  812.           The following script file was taken from an earlier example,
  813.           with 'temp.dat' replaced by 'DUMMY_VALUE'.  Given the correct
  814.           instructions the feeder will replace DUMMY_VALUE with each
  815.           line, one at a time, from the response file and run the Wizard
  816.           on the altered script file.
  817.  
  818.           The dummy_value replacement is case sensitive.  Be careful
  819.           with your upper and lower case usage.
  820.  
  821.  
  822.                {hold left right ctrl alt}
  823.                {label $wait}
  824.                {not_at (23,66) "Press key:       " $wait}
  825.                {release left right ctrl alt}
  826.                <pgdn>
  827.                DUMMY_VALUE<enter>
  828.  
  829.                {zero}
  830.                {label $wait}
  831.                {after 10 abort_start}
  832.                {not_at (5,18) "File Transfer in Progress..." $wait}
  833.  
  834.           You provide setup and runtime instructions to the Wizard
  835.           feeder in two places.
  836.  
  837.           1 The Feeder uses the TELE.INI configuration file, as repeated
  838.           below:
  839.  
  840.           [CONTROLLER]          ; The feeder uses the [controller] section
  841.           RUN  WIZ sample.scr   ; run wiz.exe with the sample.scr
  842.           FILE sample.scr       ; Confirms the file name
  843.           EXCHANGE dummy_value  ; the value to be replaced
  844.           RESPONSE transfer.tel ; the name of the response file
  845.           CHDIR yes             ; change directories as it runs
  846.           ERROR 2               ; quit on DOS error code number 2
  847.  
  848.           The feeder will actually run 'wiz sample.scr' with the changed
  849.           'sample.scr'.  It does not check that the file names
  850.           (sample.scr here) are the same in the two places.
  851.  
  852.           The other different item is 'CHDIR', which is a switch to
  853.  
  854.  
  855.  
  856.  
  857.           The HANDS ON  Wizard manual            Page 16
  858.  
  859.  
  860.           change directories as the feeder runs.  You can enter YES or
  861.           NO.  If you enter YES the feeder strips the directory names
  862.           from file names and itself changes to the directories.  So
  863.           \SOMEDIR\backup_file is fed to the Wizard as just
  864.           'backup_file' in the script file while the feeder is in the
  865.           \SOMEDIR directory.  There is no command line equivalent to
  866.           'CHDIR'.
  867.  
  868.  
  869.           2 The Feeder uses command line parameters or instructions, as
  870.           show below:
  871.  
  872.              Usage is: ' WIZFEED   -I -D -R -S -Q## -H ? '
  873.  
  874.               -Ifile  for an alternate .Ini file.  TELE.INI is the default.
  875.               -D      Dummy_value to be exchanged in the script file.
  876.               -Rfile  alternate Response file name.
  877.               -S      to Swap WIZFEED to disk before running other software.
  878.               -Q#     Quit on DOS error number.  DOS returns 0-255.
  879.               -H or ? this Help or usage.
  880.  
  881.           -Isome_file is used to replace the TELE.INI with some other
  882.           'some_file' setup file.
  883.  
  884.           -DEXCHANGE_VALUE allows you to over-ride the value given in
  885.           the TELE.INI setup file.
  886.  
  887.           -Rsome_name tells the feeder to over-ride the file name in the
  888.           TELE.INI setup file with the response file name provided.
  889.  
  890.           -S tells the feeder to swap all but 2k of itself out of memory
  891.           before running the Wizard, or other, program.
  892.  
  893.           -Q23 would tell the feeder to quit if it received a DOS error
  894.           code of 23 after running the Wizard.  The default value is
  895.           300.
  896.  
  897.           -H or ?  are used to display the usage on screen.
  898.  
  899.  
  900.  
  901.           6.  The Apprentice
  902.  
  903.           The Wizard's Apprentice is designed to be a kinder, gentler,
  904.           bigger, and dumber, variant of the Wizard.  It is also
  905.           designed to run on machines that lock up running the Wizard.
  906.           Some software corrupts a machine's innards enough that even
  907.           keyboard diagnostic software will lock-up the machine.  The
  908.           current version of the APPrentice (app.exe) is a true TSR, or
  909.           resident, program.
  910.  
  911.  
  912.  
  913.  
  914.           The HANDS ON  Wizard manual            Page 17
  915.  
  916.  
  917.           Some features:
  918.  
  919.           - More flexibility looking for a specified string.
  920.           Anywhere on a row, or on the screen.
  921.           - Ability to change scripts on the fly.
  922.           - Ability to run multiple programs from one script.
  923.  
  924.  
  925.           Its command line usage follows:
  926.  
  927.           Usage: APP  -C -D9 -E -H -M9999 -Pscript -TS ? -U
  928.  
  929.           -C       Clock time
  930.           -D9999   Delay time
  931.           -E       add an Enter or return to each line
  932.           -H or ?  Help as seen here
  933.           -M9999   runtime Memory bytes
  934.           -Rsome   Run some program, up to 15 characters
  935.           -Sfile   use the Script file
  936.           -TS      Timer Seconds instead of milliseconds
  937.           -U       Unload the program from memory
  938.  
  939.           Unload hotkey  leftshift-rightshift-U
  940.  
  941.           However, the APPrentice is not included in the current
  942.           release, but is available on request.  We are comtemplating
  943.           merging it into a future release of the Wizard instead of
  944.           introducing more tools.  Yell for it if you have registered
  945.           the product and need it.
  946.  
  947.  
  948.  
  949.           7.  SUPPORT and the ASP
  950.  
  951.           Please consider reporting the circumstances, preferably in
  952.           written form, to technical support when you discover problems
  953.           with the software.
  954.  
  955.           Its not a good idea to compress the Hands On .EXEs.  If you
  956.           have used pklite or diet or something similar on them, please
  957.           replace the .EXE's with the original versions.
  958.  
  959.           For technical support, either call (604) 433-5189, or write to
  960.           Suite 606 - 6455 Willingdon Avenue, Burnaby, British Columbia,
  961.           Canada, V5H 4E4.  Both registered and soon to be registered
  962.           users currently get the same support without any arbitrary
  963.           time limit.  You may also try leaving a Compuserve message at
  964.           75020, 2664, but be aware that messages rapidly 'scroll off'
  965.           Compuserve.  The best electronic message area (also available
  966.           from Compuserve) is via the internet at:
  967.  
  968.  
  969.  
  970.  
  971.           The HANDS ON  Wizard manual            Page 18
  972.  
  973.  
  974.           INTERNET:vic_williams@mindlink.bc.ca.
  975.  
  976.           P. C. Softsmith
  977.           Suite 606 6455 Willingdon Ave
  978.           Burnaby, B. C., Canada
  979.           V5H 4E4
  980.  
  981.           ASP Introduction:
  982.  
  983.           Please also carefully read the accompanying SHR_WARE.DOC
  984.           document.
  985.  
  986.           "This program is produced by a member of the Association of
  987.           Shareware Professionals (ASP).  ASP wants to make sure that
  988.           the shareware principle works for you. If you are unable to
  989.           resolve a shareware-related problem with an ASP member by
  990.           contacting the member directly, ASP may be able to help.  The
  991.           ASP Ombudsman can help you resolve a dispute or problem with
  992.           an ASP member, but does not provide technical support for
  993.           members' products.  Please write to the ASP Ombudsman at 545
  994.           Grover Road, Muskegon, MI 49442 or send a CompuServe message
  995.           via CompuServe Mail to ASP Ombudsman 70007,3536."
  996.  
  997.  
  998.           Warranty
  999.  
  1000.           THE DOCUMENTATION AND ASSOCIATED SOFTWARE ARE DISTRIBUTED AND
  1001.           SOLD WITH NO WARRANTIES, EITHER EXPRESS OR IMPLIED, REGARDING
  1002.           ITS MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE.
  1003.           THE INFORMATION IN THIS DOCUMENTATION IS SUBJECT TO CHANGE
  1004.           WITHOUT NOTICE AND DOES NOT REPRESENT A COMMITTMENT ON THE
  1005.           PART OF THE VENDOR.
  1006.  
  1007.           OTHER PRODUCT AND BRAND NAMES MENTIONED ARE TRADEMARKS OR
  1008.           REGISTERED TRADEMARKS OF THEIR RESPECTIVE HOLDERS.  FOR
  1009.           INFORMATION ONLY, PORTIONS OF THIS DOCUMENT AND THE SOFTWARE
  1010.           ARE LICENSED COPYRIGHT MATERIAL COURTESY DOUGLAS THOMSON.
  1011.  
  1012.           Portions of this document and associated documents and
  1013.           software are Copyright (C)1994 P. C. Softsmith All Rights
  1014.           Reserved.
  1015.  
  1016.  
  1017.           Appendix A - Special keys
  1018.  
  1019.           These special keys must be entered exactly as shown (with the
  1020.           exception that case is not significant):  for example, Wizard
  1021.           will not recognize <Control-Up> or <Ctrl Up> - it must be
  1022.           <Ctrl-Up> or <ctrl-up> etc.
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.           The HANDS ON  Wizard manual            Page 19
  1029.  
  1030.  
  1031.                <Ctrl-@>        <X>             <Alt-180>       <Alt-P>
  1032.                <Ctrl-A>        <Y>             <Alt-181>       <Alt-Q>
  1033.                <Ctrl-B>        <Z>             <Alt-182>       <Alt-R>
  1034.                <Ctrl-C>        <[>             <Alt-183>       <Alt-S>
  1035.                <Ctrl-D>        <\>             <Alt-184>       <Alt-T>
  1036.                <Ctrl-E>        <]>             <Alt-185>       <Alt-U>
  1037.                <Ctrl-F>        <             <Alt-186>       <Alt-V>
  1038.                <Ctrl-G>        <_>             <Alt-187>       <Alt-W>
  1039.                <Ctrl-H>        <`>             <Alt-188>       <Alt-X>
  1040.                <BackSpace>     <a>             <Alt-189>       <Alt-Y>
  1041.                <Ctrl-I>        <b>             <Alt-190>       <Alt-Z>
  1042.                <Tab>           <c>             <Alt-191>       <F1>
  1043.                <Ctrl-J>        <d>             <Alt-192>       <F2>
  1044.                <Ctrl-K>        <e>             <Alt-193>       <F3>
  1045.                <Ctrl-L>        <f>             <Alt-194>       <F4>
  1046.                <Ctrl-M>        <g>             <Alt-195>       <F5>
  1047.                <Enter>         <h>             <Alt-196>       <F6>
  1048.                <Ctrl-N>        <i>             <Alt-197>       <F7>
  1049.                <Ctrl-O>        <j>             <Alt-198>       <F8>
  1050.                <Ctrl-P>        <k>             <Alt-199>       <F9>
  1051.                <Ctrl-Q>        <l>             <Alt-200>       <F10>
  1052.                <Ctrl-R>        <m>             <Alt-201>       <F11>
  1053.                <Ctrl-S>        <n>             <Alt-202>       <F12>
  1054.                <Ctrl-T>        <o>             <Alt-203>       <Shift-F1>
  1055.                <Ctrl-U>        <p>             <Alt-204>       <Shift-F2>
  1056.                <Ctrl-V>        <q>             <Alt-205>       <Shift-F3>
  1057.                <Ctrl-W>        <r>             <Alt-206>       <Shift-F4>
  1058.                <Ctrl-X>        <s>             <Alt-207>       <Shift-F5>
  1059.                <Ctrl-Y>        <t>             <Alt-208>       <Shift-F6>
  1060.                <Ctrl-Z>        <u>             <Alt-209>       <Shift-F7>
  1061.                <Ctrl-[>        <vq>            <Alt-210>       <Shift-F8>
  1062.                <Esc><w>                        <Alt-211>       <Shift-F9>
  1063.                <Ctrl-\>        <x>             <Alt-212>       <Shift-F10>
  1064.                <Ctrl-]>        <y>             <Alt-213>       <Shift-F11>
  1065.                <Ctrl-        <z>             <Alt-214>       <Shift-F12>
  1066.                <Ctrl-_>        <{>             <Alt-215>       <Ctrl-F1>
  1067.                < >             <|>             <Alt-216>       <Ctrl-F2>
  1068.                <!>             <}>             <Alt-217>       <Ctrl-F3>
  1069.                <">             <~?             <Alt-218>       <Ctrl-F4>
  1070.                <#>             <Alt-127>       <Alt-219>       <Ctrl-F5>
  1071.                <$>             <Alt-128>       <Alt-220>       <Ctrl-F6>
  1072.                <%>             <Alt-129>       <Alt-221>       <Ctrl-F7>
  1073.                <&>             <Alt-130>       <Alt-222>       <Ctrl-F8>
  1074.                <'>             <Alt-131>       <Alt-223>       <Ctrl-F9>
  1075.                <(>             <Alt-132>       <Alt-224>       <Ctrl-F10>
  1076.                <)>             <Alt-133>       <Alt-225>       <Ctrl-F11>
  1077.                <*>             <Alt-134>       <Alt-226>       <Ctrl-F12>
  1078.                <+>             <Alt-135>       <Alt-227>       <Alt-F1>
  1079.                <,>             <Alt-136>       <Alt-228>       <Alt-F2>
  1080.                <->             <Alt-137>       <Alt-229>       <Alt-F3>
  1081.  
  1082.  
  1083.  
  1084.  
  1085.           The HANDS ON  Wizard manual            Page 20
  1086.  
  1087.  
  1088.                <.>             <Alt-138>       <Alt-230>       <Alt-F4>
  1089.                </>             <Alt-139>       <Alt-231>       <Alt-F5>
  1090.                <0>             <Alt-140>       <Alt-232>       <Alt-F6>
  1091.                <1>             <Alt-141>       <Alt-233>       <Alt-F7>
  1092.                <2>             <Alt-142>       <Alt-234>       <Alt-F8>
  1093.                <3>             <Alt-143>       <Alt-235>       <Alt-F9>
  1094.                <4>             <Alt-144>       <Alt-236>       <Alt-F10>
  1095.                <5>             <Alt-145>       <Alt-237>       <Alt-F11>
  1096.                <6>             <Alt-146>       <Alt-238>       <Alt-F12>
  1097.                <7>             <Alt-147>       <Alt-239>       <Alt-1>
  1098.                <8>             <Alt-148>       <Alt-240>       <Alt-2>
  1099.                <9>             <Alt-149>       <Alt-241>       <Alt-3>
  1100.                <:>             <Alt-150>       <Alt-242>       <Alt-4>
  1101.                <;>             <Alt-151>       <Alt-243>       <Alt-5>
  1102.                <<>             <Alt-152>       <Alt-244>       <Alt-6>
  1103.                <=>             <Alt-153>       <Alt-245>       <Alt-7>
  1104.                <>>             <Alt-154>       <Alt-246>       <Alt-8>
  1105.                <?>             <Alt-155>       <Alt-247>       <Alt-9>
  1106.                <@>             <Alt-156>       <Alt-248>       <Alt-0>
  1107.                <A>             <Alt-157>       <Alt-249>       <Alt ->
  1108.                <B>             <Alt-158>       <Alt-250>       <Alt =>
  1109.                <C>             <Alt-159>       <Alt-251>       <Up>
  1110.                <D>             <Alt-160>       <Alt-252>       <Down>
  1111.                <E>             <Alt-161>       <Alt-253>       <Left>
  1112.                <F>             <Alt-162>       <Alt-254>       <Right>
  1113.                <G>             <Alt-163>       <Alt-255>       <PgUp>
  1114.                <H>             <Alt-164>       <Ctrl-Break>    <PgDn>
  1115.                <I>             <Alt-165>       <Alt-A>         <Ins>
  1116.                <J>             <Alt-166>       <Alt-B>         <Del>
  1117.                <K>             <Alt-167>       <Alt-C>         <Home>
  1118.                <L>             <Alt-168>       <Alt-D>         <End>
  1119.                <M>             <Alt-169>       <Alt-E>         <Ctrl-Up>
  1120.                <N>             <Alt-170>       <Alt-F>         <Ctrl-Down>
  1121.                <O>             <Alt-171>       <Alt-G>         <Ctrl-Left>
  1122.                <P>             <Alt-172>       <Alt-H>         <Ctrl-Right>
  1123.                <Q>             <Alt-173>       <Alt-I>         <Ctrl-PgUp>
  1124.                <R>             <Alt-174>       <Alt-J>         <Ctrl-PgDn>
  1125.                <S>             <Alt-175>       <Alt-K>         <Ctrl-Home>
  1126.                <T>             <Alt-176>       <Alt-L>         <Ctrl-End>
  1127.                <U>             <Alt-177>       <Alt-M>
  1128.                <V>             <Alt-178>       <Alt-N>
  1129.                <W>             <Alt-179>       <Alt-O>
  1130.  
  1131.           Note that these special keys must be entered exactly as shown
  1132.           (with the exception that case is not significant):  for
  1133.           example, Wizard will not recognize <Control-Up> or <Ctrl Up> -
  1134.           it must be <Ctrl-Up> or
  1135.            <ctrl-up> etc.
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.           The HANDS ON  Wizard manual            Page 21
  1143.  
  1144.  
  1145.           Appendix B - Acknowledgments and history
  1146.  
  1147.           This product has been developed with the co-operation of the
  1148.           author, and a proportion of each registration is being
  1149.           forwarded to the primary author Douglas Thomson.
  1150.  
  1151.           A brief history:
  1152.  
  1153.           May, 1994  Reworked documentation and product name.  Ver. 1.6
  1154.           24-Nov-93  made cut eliminate trailing spaces.  Ver. 1.6
  1155.           19-May-93  added enable and disable keyboard functions
  1156.           15-Jun-92  initial release.  Version 1.0
  1157.  
  1158.  
  1159.           Appendix C - ShareWare Vendor Notice (if any)
  1160.  
  1161.           If you are a shareware vendor, please feel free to replace
  1162.           this with your standard notice.
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.